Dynomotion

Group: DynoMotion Message: 12560 From: az9633@ymail.com Date: 12/2/2015
Subject: Snap amp minimum current

Hello Tom:

I would like to use a Snap Amp to drive 4 axes of dc servo motors that require only 0.1 amp each to run at no load and fully loaded they require less than 1 amp.  They will be running at nearly no load all the time.  Power supply will be 24 v.  Encoders are 500 line.  Do you see this as a problem with the Snap Amps running at such a low current?

Do you think that I may need to add load resistors in parallel with the motors to draw more current?  If so, what would be a reasonable load?

What is the minimum DC brush motor winding inductance required for the Snap amp?


Thank you.


AZ



Group: DynoMotion Message: 12561 From: TK Date: 12/2/2015
Subject: Re: Snap amp minimum current
Hi AZ,

Those are very low current motors.  SnapAmp's current range goes to +/- 35Amps with 0.03A resolution.  Torque resolution would therefore be very low.  Its hard to say how well it would work.  Because Torque is double integrated over time (which has fine resolution of 90us) to change position it may work.  For example it is possible to control the temperature of a room fairly accurately with low resolution control (on/off).

It might be better to operate SnapAmp in Voltage mode.  SnapAmp's 33KHz PWM output has +/- 9 bits of range.  So the resolution would be 24V/512 = 0.05V resolution.  What is the motor resistance?  It would require a custom User Program to operate in Voltage Mode as only current mode is directly supported.   The C Program would have to output the PWM or PWMR commands based on the Servo Output.

Regarding inductance: SnapAmp's PWMs operate at 33KHz.  You can calculate how much current ripple there would be over 15us at your motor inductance and the 24V. Current rise = Voltage x Time / Inductance.

HTH
Regards
TK


On 12/2/2015 9:05 AM, az@... [DynoMotion] wrote:
 

Hello Tom:

I would like to use a Snap Amp to drive 4 axes of dc servo motors that require only 0.1 amp each to run at no load and fully loaded they require less than 1 amp.  They will be running at nearly no load all the time.  Power supply will be 24 v.  Encoders are 500 line.  Do you see this as a problem with the Snap Amps running at such a low current?

Do you think that I may need to add load resistors in parallel with the motors to draw more current?  If so, what would be a reasonable load?

What is the minimum DC brush motor winding inductance required for the Snap amp?


Thank you.


AZ




Group: DynoMotion Message: 12564 From: az@aimele.com Date: 12/2/2015
Subject: Re: Snap amp minimum current
Thanks for your answer.  The static motor resistance is 15 ohms measured in multiple spots of the motor rotation with a DVM. These motors will be used only to spin some disks and hold position with no load so the current resolution may not be a problem unless it causes too much jitter.  I'll try it as is and maybe try a parallel load resistor if the jitter is too much.  Using voltage mode will be a last resort.

AZ



Group: DynoMotion Message: 13250 From: az9633@ymail.com Date: 5/9/2016
Subject: Re: Snap amp minimum current
Hello Tom:

I have been running those low current motors directly with the SnapAmp Peak current set to 10 and they work fine.  No excess jitter or other noise.  I did not add the parallel load resistors.
I have the Pgain set to 3. Dgain at 300 and this delivers very acceptable holding torque and stability with a 100 hz low pass gain filter.  These motors have ferrite beads on the motor leads and the beads do get warm to the touch.  The motors get warm also but just barely enough to feel the temp difference from ambient.

I do have a couple of other issues that came up.  The motor actual positions are offset by quite a bit when in position and this offset distance is consistent no matter the motor position.  If I DisableAxis, then EnableAxis the motor will shift the distance of this offset each time. On an analog drive I would simply adjust the input offset adjustment to take care of this but is there a way to adjust the SnapAmp output offset to eliminate this?

The second issue has to do with the EnableAxisDest(0,X) command


I am using version 4.32 now and have used  version 4.31 and 4.30 previously.
In 4.31 and 4.30 when I used this command, it would preset the current axis position to the value of (X) with no motion.  In 4.32 it commands a move to that position (X).  Am I missing something or did this change? 

Group: DynoMotion Message: 13252 From: Tom Kerekes Date: 5/9/2016
Subject: Re: Snap amp minimum current

Hi AZ,

Adding some I (Integrator Gain) should force the average error to be exactly zero.  Start with a small number such as 0.00001.

EnableAxisDest(0,X); will enable the axis and set the target destination to X.  If X is not the current encoder position then this would normally cause a violent motion to move the encoder position from wherever it is to X.  So whether there is motion or not will be determined by where the Axis currently is Positioned at.  I'm not aware of any change in the behavior over those versions.

HTH
Regards
TK

On 5/9/2016 7:20 AM, az@... [DynoMotion] wrote:
 

Hello Tom:


I have been running those low current motors directly with the SnapAmp Peak current set to 10 and they work fine.  No excess jitter or other noise.  I did not add the parallel load resistors.
I have the Pgain set to 3. Dgain at 300 and this delivers very acceptable holding torque and stability with a 100 hz low pass gain filter.  These motors have ferrite beads on the motor leads and the beads do get warm to the touch.  The motors get warm also but just barely enough to feel the temp difference from ambient.

I do have a couple of other issues that came up.  The motor actual positions are offset by quite a bit when in position and this offset distance is consistent no matter the motor position.  If I DisableAxis, then EnableAxis the motor will shift the distance of this offset each time. On an analog drive I would simply adjust the input offset adjustment to take care of this but is there a way to adjust the SnapAmp output offset to eliminate this?

The second issue has to do with the EnableAxisDest(0,X) command


I am using version 4.32 now and have used  version 4.31 and 4.30 previously.
In 4.31 and 4.30 when I used this command, it would preset the current axis position to the value of (X) with no motion.  In 4.32 it commands a move to that position (X).  Am I missing something or did this change? 


Group: DynoMotion Message: 13253 From: az9633@ymail.com Date: 5/9/2016
Subject: Re: Snap amp minimum current
OK.  How can I preset the current axis position in Kflop without Kcnc running to a value other than zero?  I can't seem to find an example of this other than the G code fixture offsets in Kcnc.
 
Would I set the commanded position or set the actual current encoder position?

 Would I have to do it with the axis disabled especially considering that the actual motor position would jump to the offset as mentioned before?

AZ
Group: DynoMotion Message: 13254 From: Tom Kerekes Date: 5/9/2016
Subject: Re: Snap amp minimum current

Hi AZ,

Depends a lot on what you are trying to do and what is important to you.

The normal technique is to enable the axis and set the target destination to where the Encoder Position is currently reading with:

EnableAxisDest(0,ch0->Position);

This method maintains the correct Axis Position even after a crash, Drive disable, drift, manual movement, etc as the system will still maintain a valid Encoder position regardless of whether the axis follows the desired Commanded positions or not.  This is what EnableAxis(0); does for Servo Mode Axes by default.

This method should enable the axis gracefully avoiding any violent motion because the target servo position is set to where it actually is.

Adding the I gain should make the Commanded position and Measured Encoder position very close (average difference will be zero except for any servo dither).   But there still might be some movement depending on the servo dither, if/how long the axis has been disabled, drift, manual movement, etc...  If this is a problem you might save the last commanded destination, enable the axis, then perform a controlled movement back to the last commanded destination.  For example:

double SaveDest=ch0->Dest;  // Save where we were last commanded to be

EnableAxisDext(0, ch0->Position); // enable the axes where we are

Move(0,SaveDest);  // move back to where we were last commanded

while (!CheckDone(0)) ;  // wait for the motion back to complete


HTH
Regards
TK

On 5/9/2016 9:50 AM, az@... [DynoMotion] wrote:
 

OK.  How can I preset the current axis position in Kflop without Kcnc running to a value other than zero?  I can't seem to find an example of this other than the G code fixture offsets in Kcnc.

 
Would I set the commanded position or set the actual current encoder position?

 Would I have to do it with the axis disabled especially considering that the actual motor position would jump to the offset as mentioned before?

AZ

Group: DynoMotion Message: 13255 From: az@aimele.com Date: 5/9/2016
Subject: Re: Snap amp minimum current
Tom:
I think I may have over complicated my question.  What I want to do is set the current position to another value while not moving the axis.
For example: After the axis homes, I can zero the axis so the current position is 0.000.  I want to set that homed position to be 14.400 inches instead of 0.000 without moving the motor.
Can I do that?

AZ


Group: DynoMotion Message: 13256 From: ericncn Date: 5/10/2016
Subject: Re: Snap amp minimum current
Me, too.
When I did some experimenting for configuring my machine in closed loop mode, which I abandoned, I stumbled in this issue too.  After homing my machine is in a position that I consider to be (x,y,z) = (0,0,90).
It would be nice if the EnableAxisDest() function would accept a parameter for telling it which position the current position is.

If I remember correctly - but it was so many months ago so I may be wrong - I had to set the position via the Kmotion application every time after homing with KmotionCNC, as I couldn't find an equivalent function for doing it in C.

Regards,
EC
Group: DynoMotion Message: 13258 From: David Stevenson Date: 5/10/2016
Subject: Re: Snap amp minimum current

Hi Guys,

I may have misunderstood the problem, but can't you use an offset such as G92 to set the homed position to another value?

Regards,
David.

On 5/10/2016 3:21 AM, ericnc@... [DynoMotion] wrote:
 

Me, too.
When I did some experimenting for configuring my machine in closed loop mode, which I abandoned, I stumbled in this issue too.  After homing my machine is in a position that I consider to be (x,y,z) = (0,0,90).
It would be nice if the EnableAxisDest() function would accept a parameter for telling it which position the current position is.

If I remember correctly - but it was so many months ago so I may be wrong - I had to set the position via the Kmotion application every time after homing with KmotionCNC, as I couldn't find an equivalent function for doing it in C.

Regards,
EC



Virus-free. www.avast.com
Group: DynoMotion Message: 13260 From: Tom Kerekes Date: 5/10/2016
Subject: Re: Snap amp minimum current

To set the current physical position to some desired (zero or non-zero position) do the following:

DisableAxis(0);  // disable the axis so we don't jump/jerk when we change the encoder position
ch0->Position=90.0*Counts_per_mm;  // Set whatever machine position you would like for that physical position
EnableAxisDest(0,ch->Position); // enable the servo with that position as the target destination

HTH
Regards
TK

On 5/10/2016 12:21 AM, ericnc@... [DynoMotion] wrote:
 

Me, too.
When I did some experimenting for configuring my machine in closed loop mode, which I abandoned, I stumbled in this issue too.  After homing my machine is in a position that I consider to be (x,y,z) = (0,0,90).
It would be nice if the EnableAxisDest() function would accept a parameter for telling it which position the current position is.

If I remember correctly - but it was so many months ago so I may be wrong - I had to set the position via the Kmotion application every time after homing with KmotionCNC, as I couldn't find an equivalent function for doing it in C.

Regards,
EC


Group: DynoMotion Message: 13261 From: Tom Kerekes Date: 5/10/2016
Subject: Re: Snap amp minimum current

oops should have been:

EnableAxisDest(0,ch0->Position); // enable the servo with that position as the target destination

Regards

TK


On 5/10/2016 12:18 PM, Tom Kerekes tk@... [DynoMotion] wrote:
 

To set the current physical position to some desired (zero or non-zero position) do the following:

DisableAxis(0);  // disable the axis so we don't jump/jerk when we change the encoder position
ch0->Position=90.0*Counts_per_mm;  // Set whatever machine position you would like for that physical position
EnableAxisDest(0,ch->Position); // enable the servo with that position as the target destination

HTH
Regards
TK

On 5/10/2016 12:21 AM, ericnc@... [DynoMotion] wrote:
 

Me, too.
When I did some experimenting for configuring my machine in closed loop mode, which I abandoned, I stumbled in this issue too.  After homing my machine is in a position that I consider to be (x,y,z) = (0,0,90).
It would be nice if the EnableAxisDest() function would accept a parameter for telling it which position the current position is.

If I remember correctly - but it was so many months ago so I may be wrong - I had to set the position via the Kmotion application every time after homing with KmotionCNC, as I couldn't find an equivalent function for doing it in C.

Regards,
EC



Group: DynoMotion Message: 13265 From: ericncn Date: 5/12/2016
Subject: Re: Snap amp minimum current
Thank you! This should fix it, will try it next time I'll put my hands on the machine.
EC


DisableAxis(2);  // disable the axis so we don't jump/jerk when we change the encoder position
ch2->Position=90.0*Counts_per_mm;  // Set whatever machine position you would like for that physical position
EnableAxisDest(2,ch2->Position); // enable the servo with that position as the target destination
Group: DynoMotion Message: 13267 From: az@aimele.com Date: 5/12/2016
Subject: Re: Snap amp minimum current
I tried it and it worked. I didn't realize that the "*Counts_per_mm" was to be defined by me so I originally got an error. I just
put in a position value without that portion of the statement and it works splendidly.

Thanks Tom.

AZ




Group: DynoMotion Message: 13271 From: az@aimele.com Date: 5/12/2016
Subject: Re: Snap amp minimum current
Yes you can if you use the KCNC. But In my case I'm not using KCNC I'm developing a controller in the C code with a PC running VB.

AZ